<?php
namespace app\admin\controller;
use think\Controller;
use think\Exception;
use think\Log;


class AuthGroup extends Base
{
    /**
     * 用户组管理列表
     * @author wcy
     * @version 2017年4月18日17:04:27
     */
    public function groupList(){
        try{
            if($this->request->isAjax()||$this->request->isPost()){
                $data = $this->deDataTablesJson();
                $draw=$data['draw'];
                $start=$data["start"];
                $length=$data["length"];
                $search="";
                if(!empty($_POST["search"])){
                    $search=$_POST["search"];
                }
                $data=model("AuthGroup")->groupList($search,$start,$length);
                if(!$data){
                    return json(["draw"=>$draw,"recordsTotal"=>0,"recordsFiltered"=>0,"data"=>[]]);
                }else{
                    return json(["draw"=>$draw,"recordsTotal"=>$data["count"],"recordsFiltered"=>$data["count"],"data"=>$data["data"]]);
                }
            }else{
                return view("grouplist");
            }
        }catch (Exception $e){
            Log::record($e->getMessage());
            return view("grouplist");
        }
    }
    /**
     * 添加用户组
     * @author wcy
     * @version 2017年4月18日19:12:31
     */
    public function addGroup(){
        try{
            if($this->request->isAjax()||$this->request->isPost()){
                $data["name"]=$_POST["name"];
                $count=model("AuthGroup")->getGroupByName($data["name"]);
                if($count>0){
                    return json(["code"=>-1,"msg"=>"用户组名称已经存在!"]);
                }
                $res=model("AuthGroup")->addGroup($data);
                if($res!==false){
                    return json(["code"=>1,"msg"=>"添加成功"]);
                }else{
                    return json(["code"=>1,"msg"=>"添加失败"]);
                }
            }else{
                return view("addgroup");
            }
        }catch (Exception $e){
            Log::record($e->getMessage());
            return view("addgroup");
        }
    }
    /**
     * 编辑用户组
     * @author wcy
     * @version 2017年4月18日19:20:31
     */
    public function editGroup(){
        try{
            if($this->request->isPost()||$this->request->isAjax()){
                $id=$_POST["id"];
                $data["name"]=$_POST["name"];
                $count=model("AuthGroup")->getGroupByName($data["name"]);
                if($count>0){
                    return json(["code"=>-1,"msg"=>"用户组名称已经存在!"]);
                }
                $res=model("AuthGroup")->editGroup($id,$data);
                if($res!==false){
                    return json(["code"=>1,"msg"=>"修改成功"]);
                }else{
                    return json(["code"=>-1,"msg"=>"修改失败"]);
                }
            }else{
                $id=$_GET["id"];
                $data=model("AuthGroup")->getGroupById($id);
                $this->assign("data",$data);
                return view("editgroup");
            }
        }catch (Exception $e){
            Log::record($e->getMessage());
            return view("editgroup");
        }
    }
    /**
     * 删除用户组
     * @author wcy
     * @version 2017年4月18日19:28:12
     */
    public function delGroup(){
        try{
            $id=$_POST["id"];
            $res=model("AuthGroup")->delGroup($id);
            if($res!==false){
                return json(["code"=>1,"msg"=>"删除成功"]);
            }else{
                return json(["code"=>-1,"msg"=>"删除失败"]);
            }
        }catch (Exception $e){
            Log::record($e->getMessage());
            return json(["code"=>-1,"msg"=>"系统出错，请刷新页面"]);
        }
    }
    /**
     * 分配权限列表
     * @author wcy
     * @version 2017年4月19日17:39:45
     */
    public function fpPermission(){
        try{
            if($this->request->isAjax()||$this->request->isPost()){

            }else{
                $id=$_GET["id"];
                $group_data=model("AuthGroup")->getGroupById($id);
                $this->assign("group_data",$group_data);
                $data=model("AuthRule")->getRuleAll();
                $this->fp($data);
                return view("fppermission");
            }
        }catch (Exception $e){
            Log::record($e->getMessage());
            return view("fppermission");
        }
    }

    public function fp($data){
        foreach($data as $key=>$value){
            if($value["pid"]==0){
                $dt[$value['id']]=$value;
            }
            if($value["pid"]!=0&&$value["ppid"]==0){
                $dt[$value['pid']]["data"][$value['id']]=$value;
            }
            if($value["pid"]!=0&&$value["ppid"]!=0){
                $dt[$value['pid']]["data"][$value['ppid']]["data"][$value["id"]]=$value;
            }
        }
       $this->assign("permission_data",$dt);
    }

    /**
     * 分配权限
     * @author wcy
     * @version 2017年4月21日14:30:50
     */
    public function addPermission(){
        try{
            $id=$_POST["id"];
            $data["rules"]=$_POST["rules"];
            $res=model("AuthGroup")->editGroup($id,$data);
            if($res!==false){
                return json(["code"=>1,"msg"=>"分配权限成功"]);
            }else{
                return json(["code"=>-1,"msg"=>"分配权限失败"]);
            }

        }catch (Exception $e){
            Log::record($e->getMessage());
            return json(["code"=>-1,"msg"=>"系统出错，请刷新页面"]);
        }
    }
}